package com.xiaocikuai.smallchunks.controller.User;


import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.xiaocikuai.smallchunks.entity.User.Duser;
import com.xiaocikuai.smallchunks.service.User.impl.DuserServiceImpl;
import com.xiaocikuai.smallchunks.utils.resultd.Resultd;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author author1
 * @since 2024-07-11
 */
@RestController
@RequestMapping("/api/duser")
public class DuserController {
    @Resource
    private DuserServiceImpl duserService;

    @PostMapping("/add")
    public Resultd addDuser(@RequestHeader("Authorization") String token, @RequestBody Duser duser) {
        if (duserService.save(duser)) {
            return Resultd.ok().data("info", "注册成功");
        } else {
            return Resultd.error().data("info", "注册失败");
        }
    }

    @PostMapping("/delete")
    public Resultd deleteDuser(@RequestHeader("Authorization") String token, @RequestBody Duser duser) {
        if (duserService.removeById(duser.getDuid())) {
            return Resultd.ok().data("info", "删除成功");
        } else {
            return Resultd.error().data("info", "删除失败");
        }
    }

    @PostMapping("/update")
    public Resultd updateDuser(@RequestHeader("Authorization") String token, @RequestBody Duser duser) {
        if (duserService.updateById(duser)) {
            return Resultd.ok().data("info", "更新成功");
        } else {
            return Resultd.error().data("info", "更新失败");
        }
    }

    @PostMapping("/selectById")
    public Resultd selectById(@RequestHeader("Authorization") String token, @RequestBody Duser duser) {
        try {
            Duser foundUser = duserService.getById(duser.getDuid());
            foundUser = Objects.requireNonNullElse(foundUser, new Duser());
            return Resultd.ok().data("info",foundUser);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }


    @PostMapping("/select")
    public Resultd selectDuserList(@RequestHeader("Authorization") String token, @RequestBody Duser duser) {
        List<Duser> dusers = duserService.list();
        if (dusers!= null) {
            return Resultd.ok().data("info", dusers);
        } else {
            return Resultd.error().data("info", "未找到对应记录");
        }
    }

//    @PostMapping("/selectPage")
//    public Resultd selectDuserPage(@RequestHeader("Authorization") String token, @RequestBody Duser duser) {
//        List<Duser> dusers = duserService.list();
//        if (dusers!= null) {
//            return Resultd.ok().data("info", dusers);
//        } else {
//            return Resultd.error().data("info", "未找到对应记录");
//        }
//    }

    //返回未审核列表
    @PostMapping("/selectNo")
    public Resultd selectNo(@RequestHeader("Authorization") String token, @RequestBody Duser duser) {
        try {
            Wrapper<Duser> duserWrapper = duserService.buildWrapperBasedOnDuser(duser);
            List<Duser> dusers = duserService.list(duserWrapper);
            dusers = Objects.requireNonNullElse(dusers, new ArrayList<>());
            return Resultd.ok().data("info", dusers);
        } catch (Exception e) {
            return Resultd.error().data("bug",e);
        }
    }









}
